home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d11 / eganorm.arc / EGANORM.PAS < prev    next >
Pascal/Delphi Source File  |  1987-05-03  |  4KB  |  144 lines

  1. program EGAnorm;
  2. {
  3. By Rob Henningsgard, Compu$erve(76630,2145).
  4. Thanks to Kent Cedola for GPPAL.P.
  5.  
  6. 1) Places the EGA in textmode 3.
  7. 2) Sets the palette to defaults.
  8. 3) Returns altered cursor to normal settings.
  9.  
  10. By Rob Henningsgard, Compu$erve(76630,2145).
  11.  
  12. Written after considerable irritation at programs which sometimes 'forget'
  13. to reset the cursor on terminating (like Xtree, for instance), or which
  14. can't reset the EGA mode after aborting (like some of my Turbo Pascal
  15. programs, for instance.)
  16.  
  17. The colors can be changed to provide a nonstandard system palette.  A nice
  18. example is to set Palette(0,
  19. }
  20.  
  21. type
  22.   Palette_Array = array[0..15] of integer;
  23.  
  24. const
  25.   Black : integer = 0;
  26.   Blue : integer = 1;
  27.   Green : integer = 2;
  28.   Cyan : integer = 3;
  29.   Red : integer = 4;
  30.   Magenta : integer = 5;
  31.   Brown : integer = 6;
  32.   White : integer = 7;
  33.   Grey : integer = 56;
  34.   Light_Blue : integer = 57;
  35.   Light_Green : integer = 58;
  36.   Light_Cyan : integer = 59;
  37.   Light_Red : integer = 60;
  38.   Light_Magenta : integer = 61;
  39.   Yellow : integer = 62;
  40.   Bright_White : integer = 63;
  41.  
  42. var
  43.   I,J : integer;
  44.   Palette : Palette_Array;
  45.  
  46.  
  47. procedure Set_EGA_Mode(m : byte);
  48. var
  49.   regs : record
  50.            ax,bx,cx,dx,bp,di,si,ds,es,flags : integer
  51.          end;
  52. begin
  53.   regs.ax := $0000 or m;
  54.   intr($10, regs)
  55. end;
  56.  
  57.  
  58. {                                                                              }
  59. {       EGA Graphic Primitive for Turbo Pascal 3.01A, Version 01FEB86.         }
  60. {       (C) 1986 by Kent Cedola, 2015 Meadow Lake Ct., Norfolk, VA, 23518      }
  61. {                                                                              }
  62. {       Description: Set the EGA palette register(s).  Warning: Palettes       }
  63. {       will be restored on a mode change (e.g., from text to graphics)        }
  64. {                                                                              }
  65.  
  66. procedure GPPAL(Palette,Color: Integer);
  67. begin
  68.   inline
  69.     ($8A/$5E/<Palette/$8A/$7E/<Color/$B8/$1000/$CD/$10);
  70. end;
  71.  
  72.  
  73. procedure Set_Cursor(Start_Line,End_Line : integer);
  74. {
  75. Sets the DOS cursor to the values specified.
  76. }
  77. type
  78.   Register_Record =
  79.     record case integer of
  80.       1 : (ax,bx,cx,dx,bp,si,di,ds,es,flags : integer);
  81.       2 : (al,ah,bl,bh,cl,ch,dl,dh : byte);
  82.     end;
  83.  
  84. var
  85.   Reg : Register_Record;
  86.  
  87. begin
  88.    Reg.ax := $0100;
  89.    Reg.bx := $0000;
  90.    Reg.cx := ((Start_Line and $FF) shl 8) or (End_Line and $FF);
  91.    Reg.dx := $0000;
  92.    Reg.ds := $0000;
  93.    intr($10,Reg);
  94. end;
  95.  
  96.  
  97. begin {EGAnorm}
  98.   Set_EGA_Mode(3);
  99.   if ParamCount < 1 then
  100.     begin
  101. {
  102. Set the normal defaults.
  103. }
  104.       GPPAL(0,Black);{this is the default background}
  105.       GPPAL(1,Blue);
  106.       GPPAL(2,Green);
  107.       GPPAL(3,Cyan);
  108.       GPPAL(4,Red);
  109.       GPPAL(5,Magenta);
  110.       GPPAL(6,Brown);
  111.       GPPAL(7,White);{this is the default foreground}
  112.       GPPAL(8,Grey);
  113.       GPPAL(9,Light_Blue);
  114.       GPPAL(10,Light_Green);
  115.       GPPAL(11,Light_Cyan);
  116.       GPPAL(12,Light_Red);
  117.       GPPAL(13,Light_Magenta);
  118.       GPPAL(14,Yellow);
  119.       GPPAL(15,Bright_White);{this is the default highlight (?)}
  120.     end else begin
  121. {
  122. Set custom user colors.
  123. }
  124.       GPPAL(0,Blue);
  125.       GPPAL(1,Black);
  126.       GPPAL(2,Green);
  127.       GPPAL(3,White);
  128.       GPPAL(4,Red);
  129.       GPPAL(5,Magenta);
  130.       GPPAL(6,Brown);
  131.       GPPAL(7,Bright_White);{this is the default foreground}
  132.       GPPAL(8,Grey);
  133.       GPPAL(9,Light_Blue);
  134.       GPPAL(10,Light_Green);
  135.       GPPAL(11,Light_Cyan);
  136.       GPPAL(12,Light_Red);
  137.       GPPAL(13,Light_Magenta);
  138.       GPPAL(14,Yellow);
  139.       GPPAL(15,Cyan);{this is the default highlight (?)}
  140.     end;
  141.   Set_Cursor(6,7);
  142. end.
  143.  
  144.